python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】

您所在的位置:网站首页 A toy turtle翻译中文 python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】

python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】

2024-06-14 12:01| 来源: 网络整理| 查看: 265

前言

本文参考:Python库官方文档 本文例子摘抄自Python库官方文档,为了方便讲解,个人进行了修改,并且相关函数说明不完全参照文档,在结果处贴出了执行结果,不方便用jpg等图片作为展示的用了gif格式图片进行展示结果。

如有错误欢迎指出,之后会出关于turtle的实现的博文,欢迎关注!

由于网上其它文档的形式不符合我个人习惯,在查阅资料时总感觉不是很习惯,就想着顺手写一篇博文作为一个参考示例。

在了解 turtle 时发现国内外一些青少年教育所使用的一些教学产品跟 turtle 类似;turtle 如果在国内作为一个青少年教学产品还是非常好的。

简介

在 turtle 官方文档中介绍说到 “Turtle graphics is a popular way for introducing programming to kids.” 它是一个向青少年作为一个普及启蒙类编程的好方式;对于我个人来说,英文并不是我们的第一语言,一些学生的英文水平也不是过于优秀,在学习编程的时候会导致一些困难,虽然这些困难并不是决定学不学的会的主要原因,但也起到了一定的阻碍作用;如果在国内用 turtle 进行一个教学的话,用深圳的学生举例,可以用作小学5年级(包括五年级)以上学生的教学;这对于他们来说,turtle 带来的是其它教学产品所不能带来“专业编程”的实践体验;这可能就是模拟环境和真实环境的区别吧。(当然,专业编程从业者使用 turtle 也肯定是没问题,所以我之前才说,这个python库所带来的体验是比较接近于“专业”的。)

turble 是由Wally Feurzig 和 Seymour Papert 在1966年进行开发的。

在 turtle 的基本开发中是围绕着一个2D平面进行开发的,其中的主角是一个小箭头;这个小箭头就像一个小海龟,通过编程,命令小海龟在屏幕上进行移动绘制,从而画出一条条线段。通过这些线段可以组成各式各样的图案,如果你的绘画技术不怎么好,也许使用 turtle 进行绘制会有意想不到的惊喜!

在官方文档的说明中,是以交互式的方式进行的说明,在本篇文章中,不以交互式方式进行说明;由于考虑到编程的普及这几年呈现低龄化,本篇将会尽量的详细说明,但一些深入的知识将不会讲解(之后再写一篇实现解析),一般来说简单实用只需要了解使用方式即可;敬请谅解。假设你是个从业经验的开发者,想了解实现过程,那么敬请期待我的下一篇文章。

注意,因为使用 turtle 的python是需要Tk支持的版本。Tkinter是标准的Python接口Tk的GUI工具包,可以使用命令 python -m tkinter 检查是否安装。如果出现一个简单的窗口即为已安装。Tk和tkinter在大多数Unix平台以及Windows系统上都可用。点击查看官方文档具体Tk的详情。

基本编程说明

以下编程说明摘抄于官方文档(在本篇文档中初学者无需过多了解)。

在编程中,基本上使用有两个+两个类:

TurtleScreen类将会绘制出一个2D平面,turtle 相当于绘画笔。。 它的构造函数需要一个Tkinter.Canvas或一个ScrolledCanvas作为参数。 当应用程序使用turtle时应该使用它。 Screen()函数返回一个TurtleScreen子类的单例。 当turtle被用作单独的绘制工具使,就应该使用这个函数。RawTurtle 别名是 RawPen,定义了在 TurtleScreen 上绘制的Turtle对象。它的构造函数需要Canvas,可用ScrolledCanvas或TurtleScreen作为参数,上一点已经提到 TurtleScreen 将会绘制出一个2D平面给予 turtle 绘制,因此RawTurtle对象知道在哪里绘制。 派生自RawTurtle的是子类Turtle(别名:),该子类使用自动创建Pen的“ Screen实例” (如果尚未存在)。

RawTurtle/Turtle的所有方法也作为函数存在,即面向过程的接口的一部分。

过程接口提供了从类Screen和Turtle的方法派生的函数。它们与相应的方法同名。每当调用从screen方法派生的函数时,都会自动创建screen对象。每当调用从turtle方法派生的任何函数时,都会自动创建一个(未命名的)turtle对象。

函数列表

在 Turtle 中,Turtle 方法分别为 turtle 运动、笔控制、turtle 状态;TurtleScreen 方法分为窗口控制、动画控制、屏幕事件、特殊方法、输入方法、面对屏幕的特殊方法。

turtle 运动一共有如下函数: 绘制及移动:

forward() | fd()backward() | bk() | back()right() | rt()left() | lt()goto() | setpos() | setposition()setx()sety()setheading() | seth()home()circle()dot()stamp()clearstamp()clearstamps()undo()speed()

取得 turtle 状态:

position() | pos()towards()xcor()ycor()heading()distance()

设置和测量:

degrees()radians()

笔控制->绘制状态:

pendown() | pd() | down()penup() | pu() | up()pensize() | width()pen()isdown()

颜色控制:

color()pencolor()fillcolor()

填满:

filling()begin_fill()end_fill()

更多绘制控制:

reset()clear()write()

笔状态->可见度:

showturtle() | st()hideturtle() | ht()isvisible()

外观:

shape()resizemode()shapesize() | turtlesize()shearfactor()settiltangle()tiltangle()tilt()shapetransform()get_shapepoly() 未补全

事件:

onclick()onrelease()ondrag()

一些 turtle 的特殊方法:

begin_poly()

end_poly()

get_poly()

clone()

getturtle() |

getpen()

getscreen()

setundobuffer()

undobufferentries()

屏幕方法如下: 窗口控制:

bgcolor()bgpic()clear() | clearscreen()reset() | resetscreen()screensize()setworldcoordinates()

动画控制:

delay()tracer()update()

屏幕事件:

listen()onkey() | onkeyrelease()onkeypress() 未补全onclick() | onscreenclick()ontimer()mainloop() | done() 未补全

设置和特殊方法:

mode() 未补全colormode() 未补全getcanvas()getshapes()register_shape() | addshape() 未补全turtles()window_height()window_width()

输入方法:

textinput()numinput()

面对屏幕的特殊方法:

bye()exitonclick() 未补全setup()title() 函数使用与示例 turtle 运动部分 forward() | fd()

使用语法: turtle.forward(距离) turtle.fd(距离) 参数说明: 距离 一个数字 (整数 或者 浮点) (注:这个距离的单位是像素) 代码示例:

from turtle import * forward(25) input()

代码释义: from turtle import *: 在安装好turtle后,使用from引入turtle,导入其中所有的模块,所以我使用了import *; forward(25):由于我引入了 turtle 所以不再使用 turtle 进行调用,直接使用方法即可;使用forward向一个方向画一根线,这根线默认方向向右,朝着箭头所指的方向前进,并且是在行动中进行画线,方法传入的参数是你想绘制线段的长度,或者说是你想这只 turtle 想要行迹的距离,填入数字后,小 turtle 会向这个方向行动。 input():假设不适用input将会导致窗口一闪而过,使用input可以使你查看运行效果;当然不排除有些IDE或者编辑器默认有此功能。 运行结果如下: 在这里插入图片描述 如果以上示例并不能很好的突出线段的距离,可以加大距离长度;现在我将长度改为300,代码更改为:

from turtle import * forward(300) input()

运行效果如下: 在这里插入图片描述

backward()

使用语法: turtle.back(距离) turtle.bk(距离) turtle.backward(距离) 传入参数: 距离 数字 把乌龟向后移动一段距离,与乌龟前进的方向相反。不能改变乌龟的方向。 使用示例:

from turtle import * forward(300) backward(400) input()

代码释义: backward(400):使用backward返回turtle的行动,为了突出对比,使用了大于forward长度的距离参数。当然也可以使用bk和back方法,效果都是一样的:

from turtle import * forward(300) bk(400) input()

运行结果: 在这里插入图片描述

right()/left()

使用语法: turtle.right(angle) turtle.rt(angle) 参数: 角度 数字 (整数或者是浮点数) 使用right方法可以使 turtle 向右旋转角度,但要注意只是旋转角度方向,并不会前行。角度的旋转是以顺时针旋转。可以用正负号表示转向方向。不添加符号表示默认方式顺时针旋转,添加“-”号为逆时针旋转。 使用示例(为了更好的做比较,我在forward前添加了right转向):

from turtle import * right(30) forward(300) input()

right(30):顺时针转向30° 运行结果: 在这里插入图片描述 逆时针转向:

from turtle import * right(-30) forward(300) input()

right(-30):逆时针转向30° 运行结果: 在这里插入图片描述 使用right是向右转,使用left是向左转,在此不再赘述。

goto()

turtle.goto(x, y=None) turtle.setpos(x, y=None) turtle.setposition(x, y=None) 参数: x :一个数或一个坐标 y :一个数或者为空 在turtle 绘制的区域,是一个2D平面,这个平面由坐标定位,在turtle中使用pos表示坐标,初始位置为(0,0),使用goto传入坐标将会跳转至该坐标点并且绘制; 代码示例:

from turtle import * goto(30,30) input()

goto(30,30) :跳转到坐标点x为30,y为30处。 运行结果: 在这里插入图片描述 在此注意,小turtle的方向并没有改变。

setx()/sety()

turtle.setx(x) 参数: x:一个数字 (整数或者浮点) 设置x坐标的值,y坐标不变 turtle.sety(y) 参数: y :一个数字(整数或者浮点) 设置y坐标的值,x坐标不变 setx代码示例:

from turtle import * setx(10) input()

setx(10):设置x坐标到达10位置,sety不再赘述

在这里插入图片描述

setheading() | seth()

turtle.setheading(to_angle) turtle.seth(to_angle) 参数:

to_angle:一个整数(整数或者浮点)

使用 setheading 将会把turtle初始状态设置为0°,类似于一个量角器,初始状态下turtle是个垂直于一条平面的线,并没有角度,所以为0,如果使用 setheading 传入参数 45 后,将会方向指向相对于初始状态的45°。 代码示例:

from turtle import * setheading(45) input()

运行效果:

在这里插入图片描述 seth 方法类似不在赘述。

home()

turtle.home() 将turtle移动到原点坐标(0,0)-并将其航向设置为起始方向。

from turtle import * forward(80) home() input()

home():将turtle至于初始坐标。 运行结果:

在这里插入图片描述

circle()

turtle.circle(radius, extent=None, steps=None) 参数:

radius :数字 半径extent : 数字 范围 可以为空steps : 整数 可以为空

使用circle可以画出一个圆,或者弧度,第一个参数为半径,第二个参数可以控制绘制的范围多少,如果输入90,那么只绘制到90°位置;steps为阶梯,圆的边其实是锯齿状的,相当于像素点的感觉,一下代码将会作出对比,方便理解。 画出一个圆代码示例:

from turtle import * circle(120) input()

代码释义: circle(120):半径为120的圆 运行结果: 在这里插入图片描述 加上第二个参数extent 进行绘制:

from turtle import * circle(120,180) input()

代码释义: circle(120,180):直径120的一个扇形。 在这里插入图片描述 加入第三个参数steps代码示例:

from turtle import * circle(120,180,1) input()

代码释义: circle(120,180,1):阶梯为1的扇形。

在这里插入图片描述 变成一条直线了,我们给改steps为2,circle(120,180,2)运行结果:

在这里插入图片描述 变成一个折线了,我们给改steps为20,circle(120,180,20)运行结果: 在这里插入图片描述 恢复正常,这就是steps阶梯。

dot()

turtle.dot(size=None, *color) 参数:

size :大于0的整数color :颜色标识 用一个指定颜色绘制一个尺寸为size的原点。

代码示例:

from turtle import * dot(20,"blue") input()

运行结果: 在这里插入图片描述

stamp()

turtle.stamp() 复制一个turtle。

from turtle import * stamp() color("blue") goto(100,0) input()

代码释义: stamp():复制一个自己; color("blue"):设置当前的自己为蓝色; goto(100,0):移动到左边x为100,y为0处。 结果如下: 在这里插入图片描述 其中黑色就是我们复制的turtle②号,为了区别颜色一个为蓝一个就是初始颜色了。

clearstamp()

turtle.clearstamp(stampid) 参数:

stampid :使用 stamp 复制一个自己后将会返回一个 stamp的id值,传入id值即可删除复制的对象。

代码示例:

from turtle import * turtle2=stamp() color("blue") goto(100,0) clearstamp(turtle2) input()

代码释义: turtle2=stamp():接收返回的stampid clearstamp(turtle2):删除复制的turtle 运行结果: 在这里插入图片描述

clearstamps()

turtle.clearstamps(n=None) 参数: 一个整数或者为空 删除复制的turtle的全部或前/后n个。如果n为空,则删除所有turtle;如果n>0,则删除前n个;如果n



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3